home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / language / embedded / m68k / 68343ffp.arc / FFPPWR.SA < prev    next >
Text File  |  1989-08-30  |  4KB  |  82 lines

  1.          TTL       FAST FLOATING POINT POWER (FFPPWR)
  2. ***************************************
  3. * (C) COPYRIGHT 1981 BY MOTOROLA INC. *
  4. ***************************************
  5.  
  6. *************************************************
  7. *                  FFPPWR                       *
  8. *       FAST FLOATING POINT POWER FUNCTION      *
  9. *                                               *
  10. *  INPUT:   D6 - FLOATING POINT EXPONENT VALUE  *
  11. *           D7 - FLOATING POINT ARGUMENT VALUE  *
  12. *                                               *
  13. *  OUTPUT:  D7 - RESULT OF THE VALUE TAKEN TO   *
  14. *                THE POWER SPECIFIED            *
  15. *                                               *
  16. *     ALL REGISTERS BUT D7 ARE TRANSPARENT      *
  17. *                                               *
  18. *  CODE SIZE:  36 BYTES   STACK WORK: 42 BYTES  *
  19. *                                               *
  20. * CALLS SUBROUTINES: FFPLOG, FFPEXP AND FFPMUL  *
  21. *                                               *
  22. *  CONDITION CODES:                             *
  23. *        Z - SET IF THE RESULT IS ZERO          *
  24. *        N - CLEARED                            *
  25. *        V - SET IF OVERFLOW OCCURRED OR BASE   *
  26. *            VALUE ARGUMENT WAS NEGATIVE        *
  27. *        C - UNDEFINED                          *
  28. *        X - UNDEFINED                          *
  29. *                                               *
  30. *  NOTES:                                       *
  31. *    1) A NEGATIVE BASE VALUE WILL FORCE THE USE*
  32. *       IF ITS ABSOLUTE VALUE.  THE "V" BIT WILL*
  33. *       BE SET UPON FUNCTION RETURN.            *
  34. *    2) IF THE RESULT OVERFLOWS THEN THE        *
  35. *       MAXIMUM SIZE VALUE IS RETURNED WITH THE *
  36. *       "V" BIT SET IN THE CONDITION CODE.      *
  37. *    3) SPOT CHECKS SHOW AT LEAST SIX DIGIT     *
  38. *       PRECISION FOR 80 PERCENT OF THE CASES.  *
  39. *                                               *
  40. *  TIME: (8MHZ NO WAIT STATES ASSUMED)          *
  41. *                                               *
  42. *        THE TIMING IS VERY DATA SENSITIVE WITH *
  43. *        TEST SAMPLES RANGING FROM 720 TO       *
  44. *        1206 MICROSECONDS                      *
  45. *                                               *
  46. *************************************************
  47.          PAGE
  48. FFPPWR   IDNT  1,1 FFP POWER
  49.  
  50.          OPT       PCS
  51.  
  52.          SECTION   9
  53.  
  54.          XDEF      FFPPWR                        ENTRY POINT
  55.  
  56.          XREF      9:FFPLOG,9:FFPEXP   EXPONENT AND LOG FUNCTIONS
  57.          XREF      9:FFPMUL            MULTIPLY FUNCTION
  58.          XREF      FFPCPYRT            COPYRIGHT STUB
  59.  
  60. *****************
  61. * POWER  ENTRY  *
  62. *****************
  63.  
  64. * TAKE THE LOGORITHM OF THE BASE VALUE
  65. FFPPWR   TST.B     D7                  ? NEGATIVE BASE VALUE
  66.          BPL.S     FPPPOS              BRANCH POSITIVE
  67.          AND.B     #$7F,D7             TAKE ABSOLUTE VALUE
  68.          BSR.S     FPPPOS              FIND RESULT USING THAT
  69. *        OR.B      #$02,CCR            FORCE "V" BIT ON FOR NEGATIVE ARGUMENT
  70.          DC.L      $003C0002           *****ASSEMBLER ERROR*****
  71.          RTS                           RETURN TO CALLER
  72.  
  73. FPPPOS   BSR       FFPLOG              FIND LOG OF THE NUMBER TO BE USED
  74.          MOVEM.L   D3-D5,-(SP)         SAVE MULTIPLY WORK REGISTERS
  75.          BSR       FFPMUL              MULTIPLY BY THE EXPONENT
  76.          MOVEM.L   (SP)+,D3-D5         RESTORE MULTIPLY WORK REGISTERS
  77. * IF OVERFLOWED, FFPEXP WILL SET "V" BIT AND RETURN DESIRED RESULT ANYWAY
  78.          BRA       FFPEXP              RESULT IS EXPONENT
  79.  
  80.          END
  81.  
  82.